GROUP BY এবং HAVING Clause এর ব্যবহার

SQL এ Aggregate Functions এবং Grouping - এসকিউএল সার্টিফিকেশন (SQL Certification) - Database Tutorials

509

SQL এ GROUP BY এবং HAVING ক্লজ দুটি খুবই গুরুত্বপূর্ণ, বিশেষ করে যখন আপনি এগ্রিগেট ফাংশন (যেমন: COUNT, SUM, AVG, MAX, MIN) ব্যবহার করেন এবং একই ধরনের ডেটাকে গ্রুপ করতে চান। এই ক্লজ দুটি ডেটাকে গ্রুপ করে এবং পরবর্তীতে সেগুলোর ওপর নির্দিষ্ট শর্ত প্রয়োগ করতে সহায়তা করে।


GROUP BY Clause

GROUP BY ক্লজ ব্যবহার করা হয় ডেটাবেসের টেবিলের এক বা একাধিক কলাম দ্বারা ডেটাকে গ্রুপ করার জন্য। যখন আমরা এগ্রিগেট ফাংশন ব্যবহার করি, তখন একটি নির্দিষ্ট কলাম বা কলামগুলোর ভিত্তিতে ডেটাকে গ্রুপ করার জন্য GROUP BY ব্যবহৃত হয়।

GROUP BY এর মূল উদ্দেশ্য:

  • একাধিক রেকর্ডকে একটি নির্দিষ্ট কলাম বা কলামগুলোর মান অনুযায়ী গ্রুপ করা।
  • প্রতিটি গ্রুপের ওপর এগ্রিগেট ফাংশন প্রয়োগ করা (যেমন, COUNT, SUM, AVG ইত্যাদি)।

GROUP BY Syntax:

SELECT column1, aggregate_function(column2)
FROM table_name
WHERE condition
GROUP BY column1;

উদাহরণ ১: COUNT ব্যবহার করে গ্রুপিং

ধরা যাক, আমাদের orders নামক একটি টেবিল রয়েছে, যেখানে বিভিন্ন গ্রাহকের অর্ডারের তথ্য আছে এবং আমরা জানতে চাই, প্রতিটি গ্রাহক কতটি অর্ডার দিয়েছে।

SELECT customer_id, COUNT(order_id) AS total_orders
FROM orders
GROUP BY customer_id;

এই কুয়েরি orders টেবিল থেকে customer_id এর ভিত্তিতে গ্রুপিং করবে এবং প্রতিটি গ্রাহকের মোট অর্ডারের সংখ্যা দেখাবে।


HAVING Clause

HAVING ক্লজ GROUP BY ক্লজের সাথে ব্যবহার করা হয় এবং এটি GROUP BY-এর পরবর্তী ফিল্টারিং অপারেশন হিসেবে কাজ করে। যেখানে WHERE ক্লজ সাধারণত রেকর্ডগুলির সাথে কাজ করে, HAVING ক্লজ গ্রুপগুলির সাথে কাজ করে। HAVING এর মাধ্যমে আপনি GROUP BY এর পরবর্তী গ্রুপ করা ডেটার ওপর শর্ত প্রয়োগ করতে পারেন।

HAVING Syntax:

SELECT column1, aggregate_function(column2)
FROM table_name
WHERE condition
GROUP BY column1
HAVING condition;

উদাহরণ ২: HAVING ব্যবহার করে গ্রুপের উপর শর্ত প্রয়োগ

ধরা যাক, আমরা আগের কুয়েরি ব্যবহার করে প্রতিটি গ্রাহকের অর্ডারের সংখ্যা বের করেছি, তবে আমরা শুধু সেই গ্রাহকদের দেখতে চাই, যাদের মোট অর্ডারের সংখ্যা ১০ এর বেশি। এ জন্য HAVING ব্যবহার করা হবে।

SELECT customer_id, COUNT(order_id) AS total_orders
FROM orders
GROUP BY customer_id
HAVING COUNT(order_id) > 10;

এই কুয়েরি customer_id এর ভিত্তিতে গ্রুপ করবে এবং শুধুমাত্র সেই গ্রাহকদের দেখাবে যাদের মোট অর্ডারের সংখ্যা ১০ এর বেশি।


GROUP BY এবং HAVING এর মধ্যে পার্থক্য:

  • GROUP BY: ডেটাকে নির্দিষ্ট কলাম বা কলামগুলোর মানের ভিত্তিতে গ্রুপ করে। এটি ডেটার ওপর এগ্রিগেট ফাংশন প্রয়োগ করার জন্য ব্যবহার করা হয়।
  • HAVING: গ্রুপিংয়ের পর সেই গ্রুপের ওপর শর্ত প্রয়োগ করতে ব্যবহৃত হয়। এটি GROUP BY এর পরপর ব্যবহৃত হয় এবং গ্রুপের ফিল্টারিং এর জন্য।

উদাহরণ ৩: SUM এবং HAVING এর সমন্বয়

ধরা যাক, sales টেবিলটি রয়েছে, যেখানে প্রতিটি বিক্রির তথ্য সংরক্ষিত থাকে, এবং আমরা জানতে চাই, কোন পণ্যের বিক্রির মোট পরিমাণ ১০,০০০-এর বেশি।

SELECT product_id, SUM(sale_amount) AS total_sales
FROM sales
GROUP BY product_id
HAVING SUM(sale_amount) > 10000;

এই কুয়েরি প্রথমে product_id অনুযায়ী গ্রুপ করবে এবং তারপর সেই পণ্যগুলোর মোট বিক্রির পরিমাণ ১০,০০০ এর বেশি হলে তা প্রদর্শন করবে।


সারাংশ:

  • GROUP BY ব্যবহার করে ডেটাকে একটি বা একাধিক কলামের ভিত্তিতে গ্রুপ করা হয় এবং এগ্রিগেট ফাংশন প্রয়োগ করা হয়।
  • HAVING ক্লজ ব্যবহার করে গ্রুপের ওপর শর্ত প্রয়োগ করা হয়, যা GROUP BY ক্লজের পর আসে।
  • WHERE এবং HAVING এর মধ্যে পার্থক্য: WHERE সাধারণ রেকর্ড ফিল্টারিংয়ের জন্য এবং HAVING গ্রুপের ওপর শর্ত প্রয়োগের জন্য ব্যবহৃত হয়।

SQL এ GROUP BY এবং HAVING ক্লজের সঠিক ব্যবহার ডেটা বিশ্লেষণ এবং রিপোর্ট তৈরি করার ক্ষেত্রে অত্যন্ত কার্যকরী।

Content added By
Promotion

Are you sure to start over?

Loading...